// View2D.h
#pragma once
#include "MyGlut.h"
#include "Model.h"
#include "View.h"

using namespace glut;

// Le V de MVC
class View2D: public View {
private:
	//attributs

	static View2D* instance; // Instance de la vue pour le pattern singleton
	virtual void dessinePacman(); // Dessine le PacMan
	virtual void dessineBiere(); // Dessine une bière
	virtual void dessineJackie(); // Dessine la bouteille de Whiskey, Jackie comme "Jack Daniels"
	virtual void dessineGhost(float, float, float); // Dessine la voiture de police dans l'état 1
	virtual void viewPortMiddle(); //view contenant le jeu
	virtual void applySmoothPacmanAnimation(float); //gère l'animation de la bouche du pacman en continu
	virtual void dessineMurInterieur(); //dessine un mur intérieur
	virtual void dessineMurExHor(); //dessine un mur extérieur horizontal
	virtual void dessineMurExVert(); //dessine un mur extérieur vertical
	virtual void dessineCoinExt(int i = 0, int j = 0); //dessiner un coin de mur extérieur(param par défault car il n'est pas tjr nécessaire de les préciser)
	virtual void dessineMurPrison(); //dessine un mur de prison
	void distortionMiddle2D(float w, float h); //gestion de la disto du milieu uniquement en 2D

	View2D();
public:
	static View2D *getInstance();
	virtual void dessineMiddlePoint(); //dessine un point au centre du plateau permettant de faire une rotation sur le plateau
	virtual void gererProjection(); //gère la projection(zoom, pas zoom, ..)
	virtual void gererLookAt(); //gère le glutLookAt(mode première personne ou pas, ...)
};
